1 2 3 4 5 6 7 8 9 10 11 12 13 | // await worker(x => x + 1)(42) -> 43 const worker = function(fn) { const w = new Worker(URL.createObjectURL( new Blob([‘onmessage = async ({ data }) => postMessage(await (${fn})(...data))‘]))); return function(...args) { w.postMessage(args); return new Promise((res, rej) => { w.onmessage = ({ data }) => res(data); w.onerror = ({ data }) => rej(data); }); }; }; |